import Vue from "vue";
import VueRouter from "vue-router";
import Manage from "@/views/Manage";

Vue.use(VueRouter);

const routes = [
  {
    path: "/",
    name: "Manage",
    component: () => import("../views/Manage.vue"),
    redirect: "/reply",
    meta : {  // 加一个自定义obj
      requireAuth : true   // 参数 true 代表需要登陆才能进入 A
    },
    children: [
      { path: 'reply',
        name: 'Reply' ,
        component: () => import("../views/Reply.vue"),
        meta : {  // 加一个自定义obj
          requireAuth : true   // 参数 true 代表需要登陆才能进入 A
        }
      },
      { path: 'administrator',
        name: 'Administrator' ,
        component: () => import("../views/Administrator.vue"),
        meta : {  // 加一个自定义obj
          requireAuth : true   // 参数 true 代表需要登陆才能进入 A
        }
      }
    ]
  },
  {
    path: '/login',
    name: 'Login',
    component: () => import("../views/Login.vue"),
    meta : {
      requireAuth : false
    }
  }
];

const router = new VueRouter({
  mode: "hash",
  base: process.env.BASE_URL,
  routes,
});

//获取原型对象上的push函数
const originalPush = VueRouter.prototype.push
//修改原型对象中的push方法
VueRouter.prototype.push = function push(location) {
  return originalPush.call(this, location).catch(err => err)
}

router.beforeEach((to, from, next) => {
  // to将要访问的路径
  // from代表从哪个路径跳转而来
  // next 是一个函数，表示放行。
  // next() 直接放行 next('/login')强制跳转到登录页面
  if (to.path === '/login') return next()
  // 获取token
  const token = window.localStorage.getItem('id')
  // console.log()
  // 判断token是否存在，若存在，直接放行；若不存在，强制跳转到登录页面
  if (!token) return next({path: '/login'})
  next()
})

export default router;
